package cn.com.oceansoft.business.sys.service;


import cn.com.oceansoft.business.base.entity.Pager;
import cn.com.oceansoft.business.base.entity.Query;
import cn.com.oceansoft.business.base.entity.Result;
import cn.com.oceansoft.business.sys.entity.SysResource;

import java.util.List;
import java.util.Set;

/**
 * 资源管理业务组件接口
 *
 * @author: chenw
 * @time: 2014-5-12 下午 16:09
 */
public interface ISysResourceService {

    Pager<SysResource> findResourceByCondition(Query query);

    SysResource findResourceIdById(int resourceId);

    /**
     * 更新系统资源信息
     *
     * @param resource 新的资源信息对象
     * @return Result
     */
    Result updateResource(SysResource resource);

    /**
     * 加载指定用户权限集合
     *
     * @param userId 用户ID
     * @return 权限集合 Set<String>
     */
    Set<String> findResourceByUserId(String userId);

    /**
     * 加载系统全部资源
     *
     * @return List<SysResource>
     */
    List<SysResource> findAll();

    /**
     * 加载指定角色已绑定资源集合
     *
     * @param roleId 角色ID
     * @return List<SysResource>
     */
    List<SysResource> findResourcesByRoleId(int roleId);

    List<SysResource> findResourcesTreeByRoleId(int roleId);

    /**
     * 更新角色绑定的资源信息
     *
     * @param roleId   角色ID
     * @param resId    资源ID
     * @param operFlag 新增或删除标识位 'C' 新增 'D' 删除
     * @return Result
     */
    Result updateRoleResources(int roleId, int resId, String operFlag);

    /**
     * 批量更新角色资源关联信息
     *
     * @param roleId 角色编号
     * @param ids    资源ID集合
     */
    void updateRoleResourceBatch(int roleId, int[] ids);

    Result remove(int id);

    Result add(SysResource sysResource);

    List<SysResource> findResourcesByParentId(int i);
}
